/**
 * @file     repeatedSubString.ts
 * @brief    [459. 重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/description/)
 * @author   Zhu
 * @date     2022-11-22 01:40
 */

function repeatedSubstringPattern(s: string): boolean {
    const n = s.length;

    // i 表示重复次数，从2开始
    for (let i = 1; i < n; i++) {
        if (n % (i + 1) === 0) {
            // m 表示串的长度，至少为1
            const m = n / (i + 1);
            let match = true;
            // 以长度m为周期，逐个对比，不相等则跳出
            for (let j = 0; j < n - m; j++) {
                if (s[j] !== s[j + m]) {
                    match = false;
                    break;
                }
            }
            if (match) return true;
        }
    }

    return false;
}
